import request from '@/utils/request';
import { requestWrapper, randomDate, randomInt, randomPick, paginate } from '@/utils/mock';

// 获取系统参数列表
export function getConfigList(params) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/system/config/list',
      method: 'get',
      params
    }),
    // 模拟数据
    () => {
      // 生成一些系统配置参数
      const configList = [
        {
          configId: 1,
          configName: '系统名称',
          configKey: 'sys.name',
          configValue: '通用后台管理系统',
          configType: 'Y',
          remark: '系统名称显示在登录页和主页',
          createTime: randomDate(-365)
        },
        {
          configId: 2,
          configName: '系统版本',
          configKey: 'sys.version',
          configValue: '1.0.0',
          configType: 'Y',
          remark: '系统版本号',
          createTime: randomDate(-365)
        },
        {
          configId: 3,
          configName: '系统LOGO',
          configKey: 'sys.logo',
          configValue: '/static/logo.png',
          configType: 'Y',
          remark: '系统LOGO图片路径',
          createTime: randomDate(-365)
        },
        {
          configId: 4,
          configName: '用户默认密码',
          configKey: 'sys.user.defaultPassword',
          configValue: '123456',
          configType: 'Y',
          remark: '新增用户的默认密码',
          createTime: randomDate(-300)
        },
        {
          configId: 5,
          configName: '首页路径',
          configKey: 'sys.index.path',
          configValue: '/dashboard',
          configType: 'Y',
          remark: '登录后跳转的首页路径',
          createTime: randomDate(-300)
        },
        {
          configId: 6,
          configName: '文件上传路径',
          configKey: 'sys.file.uploadPath',
          configValue: '/upload',
          configType: 'Y',
          remark: '文件上传的保存路径',
          createTime: randomDate(-200)
        },
        {
          configId: 7,
          configName: '验证码开关',
          configKey: 'sys.login.captcha',
          configValue: 'true',
          configType: 'Y',
          remark: '登录是否需要验证码',
          createTime: randomDate(-200)
        },
        {
          configId: 8,
          configName: '账号自助注册',
          configKey: 'sys.account.register',
          configValue: 'false',
          configType: 'Y',
          remark: '是否开启账号自助注册功能',
          createTime: randomDate(-150)
        },
        {
          configId: 9,
          configName: '通知公告开关',
          configKey: 'sys.notice.enable',
          configValue: 'true',
          configType: 'Y',
          remark: '是否显示通知公告',
          createTime: randomDate(-150)
        },
        {
          configId: 10,
          configName: '最大在线用户数',
          configKey: 'sys.user.maxOnline',
          configValue: '100',
          configType: 'Y',
          remark: '系统同时在线的最大用户数量',
          createTime: randomDate(-100)
        }
      ];

      // 处理搜索条件
      let filteredConfigs = [...configList];

      if (params) {
        if (params.configName) {
          filteredConfigs = filteredConfigs.filter(item => 
            item.configName.includes(params.configName)
          );
        }
        
        if (params.configKey) {
          filteredConfigs = filteredConfigs.filter(item => 
            item.configKey.includes(params.configKey)
          );
        }
        
        if (params.configType) {
          filteredConfigs = filteredConfigs.filter(item => 
            item.configType === params.configType
          );
        }
      }

      // 处理分页
      const pageNum = params?.pageNum ? parseInt(params.pageNum) : 1;
      const pageSize = params?.pageSize ? parseInt(params.pageSize) : 10;
      const startIndex = (pageNum - 1) * pageSize;
      const endIndex = pageNum * pageSize;
      const pageData = filteredConfigs.slice(startIndex, endIndex);

      return paginate(pageData, pageNum, pageSize, filteredConfigs.length);
    }
  );
}

// 获取系统参数详情
export function getConfigDetail(configId) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: `/system/config/${configId}`,
      method: 'get'
    }),
    // 模拟数据
    {
      configId,
      configName: `系统参数${configId}`,
      configKey: `sys.param.key${configId}`,
      configValue: `参数值${configId}`,
      configType: randomPick(['Y', 'N']),
      remark: `系统参数${configId}的说明`,
      createBy: 'admin',
      createTime: randomDate(-200),
      updateBy: 'admin',
      updateTime: randomDate(-100)
    }
  );
}

// 新增系统参数
export function addConfig(data) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/system/config',
      method: 'post',
      data
    }),
    // 模拟数据
    {
      configId: randomInt(11, 100)
    }
  );
}

// 修改系统参数
export function updateConfig(data) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/system/config',
      method: 'put',
      data
    }),
    // 模拟数据
    null
  );
}

// 删除系统参数
export function deleteConfig(configIds) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: `/system/config/${configIds}`,
      method: 'delete'
    }),
    // 模拟数据
    null
  );
} 